﻿#ifndef __OUTPUT__
#define __OUTPUT__

#include "ServerType.h"
#include "ServerInstance.h"
#include <iostream>
#include <cstdio>
#include <list>
#include <tuple>

using namespace std;

namespace hw
{
	class Output
	{
		/*
		用于输出最终答案的类
		输出的数据可以分为如下几类
		1，购买服务器
		2，迁移服务器
		3，对于创建请求的响应
		*/
	public:
		Output(FILE* file) : file(file){};

		void purchase_server(const ServerType& serverType, int amount) {
		    purchase_server(serverType, amount);
		}

		void purchase_server(const string& server_type_id, int amount) {
		    fprintf(file, "(%s, %d)\n", server_type_id.c_str(), amount);
		}

		void migrate(const string& vmid, int server_id) {
		    fprintf(file, "(%s, %d)\n", vmid.c_str(), server_id);
		}

		void migrate_single(const string& vmid, int server_id, Node node) {
		    fprintf(file, "(%s, %d, %s)\n", vmid.c_str(), server_id, NodeName(node));
		}

		void allocate(int server_id) {
		    fprintf(file, "(%d)\n", server_id);
		}

		void allocate_single(int server_id, Node n) {
		    fprintf(file, "(%d, %s)\n", server_id, NodeName(n));
		}

		void start_purchase(int category) {
		    fprintf(file, "(purchase, %d)\n", category);
		}

		void start_migration(int times) {
		    fprintf(file, "(migration, %d)\n", times);
		}
		FILE* file;
	};
}; // namespace hw

#endif // !__OUTPUT__
